[FEA] Truly Decoupled Double Buffering for SG KMeans - #2484
Conversation
|
Auto-sync is disabled for draft pull requests in this repository. Workflows must be run manually. Contributors can view more details about this message here. |
viclafargue
left a comment
There was a problem hiding this comment.
Great work, the reported speedup looks promising! To make the changes easier to review and validate, could we keep this PR focused on double-buffered prefetching? The workspace-resource selection, final-inertia optimization, and cluster-cost refactoring could be handled in separate follow-up PRs, allowing each change to be tested and benchmarked independently.
|
The use of the detail namespace API is part of this optimization. The public API currently synchronizes the stream, so it is not allowing concurrent prefetch during inertia computation. |
|
Closing in favor of @viclafargue's work here: #2538 |
Dataset mem type = pinned memory. This speeds up training by a lot. nsys gave throughput for H2D transfers around 50 GB/s. This is a 114 GB dataset. The screenshot above shows the overlap between the two streams with prefetch.
Also the use of pinned memory shows > 50 GB/s of throughput for H2D transfers. This gets much lower with regular host mem.
